package com.example.smartpark.dto;

import lombok.Data;

import javax.validation.constraints.Future;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 预约数据传输对象
 */
@Data
public class ReservationDTO {

    /**
     * 预约ID
     */
    private Long id;

    /**
     * 用户ID
     */
    private Integer userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 用户真实姓名
     */
    private String realName;

    /**
     * 车辆ID
     */
    @NotNull(message = "车辆ID不能为空")
    private Integer vehicleId;

    /**
     * 车牌号
     */
    private String plateNumber;

    /**
     * 车辆类型
     */
    private String vehicleType;

    /**
     * 车位ID
     */
    @NotNull(message = "车位ID不能为空")
    private Integer parkingSpaceId;

    /**
     * 车位编号
     */
    private String spaceNumber;

    /**
     * 停车场ID
     */
    private Integer parkingLotId;

    /**
     * 停车场名称
     */
    private String parkingLotName;

    /**
     * 预约开始时间
     */
    @NotNull(message = "预约开始时间不能为空")
    @Future(message = "预约开始时间必须是未来时间")
    private Date startTime;

    /**
     * 预约结束时间
     */
    @NotNull(message = "预约结束时间不能为空")
    @Future(message = "预约结束时间必须是未来时间")
    private Date endTime;

    /**
     * 状态（0-待审核，1-已确认，2-已使用，3-已取消，4-已拒绝）
     */
    private Integer status;

    /**
     * 状态描述
     */
    private String statusDesc;

    /**
     * 预约费用
     */
    private BigDecimal fee;

    /**
     * 是否已支付（0-未支付，1-已支付）
     */
    private Integer isPaid;

    /**
     * 支付ID
     */
    private Integer paymentId;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 创建时间
     */
    private Date createdAt;

    /**
     * 更新时间
     */
    private Date updatedAt;
} 